package views;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.GroupLayout;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JButton;

import controllers.VerwijderPersoneelController;
import core.models.dataModels.VerwijderPersoneelModel;
import core.models.domainModel.Personeel;

//@Author: Wijnen David [c1026300] 2013-12-03
//-------------------------------------------
//@Description: Deze view is voor personeel te verwijderen

public class PersoneelUpdateVerwijderView extends JFrame {
	private VerwijderPersoneelModel _model;
	
	//standaard versienummer
	private static final long serialVersionUID = 1L;
	
	public PersoneelUpdateVerwijderView(VerwijderPersoneelModel model) {
		
		_model = model;
				
		//List instellen
		final JList<Personeel> listPersoneel = new JList<Personeel>();
		listPersoneel.setLayoutOrientation(JList.VERTICAL);
		listPersoneel.setFixedCellWidth(200); 
		listPersoneel.setVisibleRowCount(-1);
		listPersoneel.setSelectedIndex(0);
		
		JScrollPane listScroller = new JScrollPane(listPersoneel);
		DefaultListModel<Personeel> lstPersoneel = new DefaultListModel<Personeel>();
		listPersoneel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		//personeel invullen in de list
		if(model.getLijstPersoneel() != null &&  model.getLijstPersoneel().size()>0)
		{
			for(Personeel item : model.getLijstPersoneel()){
				lstPersoneel.addElement(item);
			}
		}
		
		listPersoneel.setModel(lstPersoneel);
		
		//knoppen toevoegen
		JButton btnVewijderPersoneel = new JButton("Personeel Verwijderen");
		btnVewijderPersoneel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				final Personeel verwijderPersoneel = (Personeel) listPersoneel.getSelectedValue();
				
				//als er een personeelslid geselecteerd is
				if(verwijderPersoneel != null)
				{
					//toon de messagebox
					int keuze = JOptionPane.showOptionDialog(
							null, 
							"Bent U zeker dat U onderstaand personeelslid wil verwijderen? \n\n"
							+ verwijderPersoneel.get_personeelsNummer() + "\n"
							+ verwijderPersoneel.getPersoon().getVoornaam() + " " + verwijderPersoneel.getPersoon().getNaam() + ".\n\n",
							"Verwijder Personeel.",
							JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null);
					
					//controleer de keuze (bij cancel wordt er niets gedaan)
					if(keuze == JOptionPane.YES_OPTION)
					{
						_model.setVerwijderPersoneel(verwijderPersoneel);
						VerwijderPersoneelController.handleView(_model);
					}
				}
				else{
					//melding eerst een personeelslid selecteren
					JOptionPane.showMessageDialog(
							null,
							"Selecteer eerst een personeelslid uit de lijst.",
							"Selecteer Personeel.",
							JOptionPane.INFORMATION_MESSAGE);
				}
			}
		});
		
		//JList list_1 = new JList();
		
		JLabel label = new JLabel("");
		
		JButton btnUpdate = new JButton("Wijzig Personeel");
		btnUpdate.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				final Personeel updatePersoneel = (Personeel) listPersoneel.getSelectedValue();
				
				//als er een personeelslid geselecteerd is
				if(updatePersoneel != null)
				{
					VerwijderPersoneelController.showUpdatePersoneelView(updatePersoneel);
					//UpdatePersoneelController.showView(updatePersoneel);					
				}
				else{
					//melding eerst een personeelslid selecteren
					JOptionPane.showMessageDialog(
							null,
							"Selecteer eerst een personeelslid uit de lijst.",
							"Selecteer Personeel.",
							JOptionPane.INFORMATION_MESSAGE);
				}
			}
		});
		
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
						.addComponent(label, Alignment.LEADING)
						.addComponent(listScroller, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 740, Short.MAX_VALUE)
						.addGroup(groupLayout.createSequentialGroup()
							.addComponent(btnUpdate)
							.addGap(450)
							.addComponent(btnVewijderPersoneel, GroupLayout.PREFERRED_SIZE, 172, GroupLayout.PREFERRED_SIZE)
							.addGap(29)))
					.addGap(40))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addComponent(label)
					.addPreferredGap(ComponentPlacement.RELATED)
					.addComponent(listScroller, GroupLayout.PREFERRED_SIZE, 204, GroupLayout.PREFERRED_SIZE)
					.addPreferredGap(ComponentPlacement.RELATED)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(btnVewijderPersoneel)
						.addComponent(btnUpdate))
					.addContainerGap(293, Short.MAX_VALUE))
		);
		
		//titel boven de list
		JLabel lblE = new JLabel("<html><table width = '500px' style ='background-color:#DAA520 ;'><tr><td width = '100px'>PersoneelsNummer</td> <td width = '100px'>PersoneelsType</td><td width = '150px'>Voornaam</td><td width = '150px'>Naam</td></tr></table></html>");
		listScroller.setColumnHeaderView(lblE);
		getContentPane().setLayout(groupLayout);
	}
}
